﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Helper;
using System.ComponentModel;
namespace CoreData
{
    public class TempStudent
    {
        public long ID { get; set; }
        [Description("Mã")]
        public string Code { get; set; }
        [Description("Tên học viên tiềm năng")]
        public string Name { get; set; }
        [Description("Họ")]
        public string FirstName { get; set; }
        [Description("Tên")]
        public string LastName { get; set; }
        [Description("Ngành")]
        public string BranchID { get; set; }
        [Description("Địa chỉ")]
        public string Address { get; set; }
        [Description("Nơi sinh")]
        public string PlaceOfBirth { get; set; }
        [Description("Ngày sinh")]
        public string DayOfBirth { get; set; }
        [Description("Tỉnh thường trú")]
        public string Province { get; set; }
        [Description("Điện thoại")]
        public string Phone { get; set; }
        [Description("Email")]
        public string Email { get; set; }
     //   [Description("Mã")]
        public bool Sex { get; set; }
      
        /// <summary>
        /// Ngày mà học viên liên hệ
        /// </summary>
        [Description("Ngày học viên liên hệ")]
        public DateTime ContactDate { get; set; }
        /// <summary>
        /// Ngày mà lễ tân liên hệ
        /// </summary>
        [Description("Ngày lễ tân liên hệ")]
        public DateTime ReceptioncontactDate { get; set; }
        /// <summary>
        /// nội dung trao đổi
        /// </summary>
        [Description("Nội dung tư vấn")]
        public string Content { get; set; }
        /// <summary>
        /// Ghi chú
        /// </summary>
        [Description("Ghi chú")]
        public string Note { get; set; }
   
        /// <summary>
        /// Nội dung mà học viên tiềm năng phản hồi
        /// </summary>
        [Description("Nội dung phản hồi")]
        public string ResponseContent { get; set; }

        public long ChannelInfoID { get; set; }
        public long Status { get; set; }
        public bool IsRegister { get; set; }
        public bool Active { get; set; }
        public bool IsDeleted { get; set; }
        [Description("Trạng thái")]
        public string StatusExt { get; set; }

        [Description("Kênh thông tin")]
        public string ChannelInfoExt { get; set; }

        [Description("Giới tính")]
        public string SexExt { get; set; }
         [Description("Tháng")]
        public int MonthExt { get; set; }
         [Description("Năm")]
        public int YearExt { get; set; }
        //[Description("Ngành")]
        // public string BranchExt { get; set; }
        [Description("...")]
        public string ColorStatusExt { get; set; } // màu trạng thái hiển thị
        public TempStudent()
        {
            Code = "";
            Name = "";
            Address = "";
            Phone = "";
            Email = "";
          
            Content = "";
            Note = "";
            ResponseContent = "";
            ContactDate = DateTime.Now;
            ReceptioncontactDate = DateTime.Now;
            IsDeleted = false;
          //  InfoChanel = "";
        }

        static TempStudent DynamicCast<T>(object row_data, object row_header) where T : TempStudent
        {
            // row_data : DataRow
            // row_header : DataColumnCollection
            TempStudent ret = new TempStudent();
            DataRow dt = (DataRow)row_data;

            foreach (DataColumn column in (DataColumnCollection)row_header)
            {
                switch (column.ColumnName)
                {
                    case "ID":
                        ret.ID = ConvertObject.ToLong(dt[column]);
                        break;
                    case "Code":
                        ret.Code = ConvertObject.ToString(dt[column]);
                        break;
                    case "Name":
                        ret.Name = ConvertObject.ToString(dt[column]);
                        break;
                    case "Address":
                        ret.Address = ConvertObject.ToString(dt[column]);
                        break;
                    case "Phone":
                        ret.Phone = ConvertObject.ToString(dt[column]);
                        break;
                    case "Email":
                        ret.Email = ConvertObject.ToString(dt[column]);
                        break;
                    case "Sex":
                        ret.Sex = ConvertObject.ToBool(dt[column]);
                        if (ret.Sex)
                            ret.SexExt = "Nam";
                        else
                            ret.SexExt = "Nữ";
                        break;

                    case "ContactDate":
                        {
                            ret.ContactDate = ConvertObject.ToDateTime(dt[column]);
                            ret.MonthExt = ret.ContactDate.Month;
                            ret.YearExt = ret.ContactDate.Year;
                        }
                        break;
                    case "ReceptioncontactDate":
                        ret.ReceptioncontactDate = ConvertObject.ToDateTime(dt[column]);
                        break;
                    case "Content":
                        ret.Content = ConvertObject.ToString(dt[column]);
                        break;
                    case "Note":
                        ret.Note = ConvertObject.ToString(dt[column]);
                        break;
                    case "ResponseContent":
                        ret.ResponseContent = ConvertObject.ToString(dt[column]);
                        break;
                    case "ChannelInfoID":
                        ret.ChannelInfoID = ConvertObject.ToInt(dt[column]);
                        break;
                    case "Status":
                        ret.Status = ConvertObject.ToInt(dt[column]);
                        break;
                    case "Active":
                        ret.Active = ConvertObject.ToBool(dt[column]);
                        break;
                    case "StatusName":
                        ret.StatusExt = ConvertObject.ToString(dt[column]);
                        break;
                    case "ChannelName":
                        ret.ChannelInfoExt = ConvertObject.ToString(dt[column]);
                        break;
                    case "IsDeleted":
                        ret.IsDeleted = ConvertObject.ToBool(dt[column]);
                        break;
                    case "IsRegister":
                        ret.IsRegister = ConvertObject.ToBool(dt[column]);
                        break;
                    case "FirstName":
                        ret.FirstName = ConvertObject.ToString(dt[column]);
                        break;
                    case "LastName":
                        ret.LastName = ConvertObject.ToString(dt[column]);
                        break;
                   // case "BranchName":
                      //  ret.BranchExt = ConvertObject.ToString(dt[column]);
                       // break;
                    case "BranchID":
                        ret.BranchID = ConvertObject.ToString(dt[column]);
                        break;
                    case  "PlaceOfBirth":
                        ret.PlaceOfBirth = ConvertObject.ToString(dt[column]);
                        break;
                    case "DayOfBirth":
                        ret.DayOfBirth = ConvertObject.ToString(dt[column]);
                        break;
                    case "Province":
                        ret.Province = ConvertObject.ToString(dt[column]);
                        break;
                    default:
                        break;
                }
            }

            return ret;
        }

    }
}
